package cn.jbolt.ai.app.service;

import cn.jbolt.ai.app.entity.AiAppNode;
import cn.jbolt.util.Result;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface AiAppNodeService extends IService<AiAppNode> {

    /**
     * 根据appID获取节点信息
     *
     * @param appId appID
     * @return 节点信息
     */
    Result<List<AiAppNode>> getNodesByAppId(Long appId);

    /**
     * 获取所有节点信息
     *
     * @param page     分页页码
     * @param pageSize 分页大小
     * @return 节点列表
     */
    Result listByPage(Integer page, Integer pageSize);

    /**
     * 删除节点
     * @param appId
     * @return
     */
     Result deleteNodesByAppId(Long appId);

    /**
     * 添加节点
     *
     * @param node 节点对象
     * @return 是否添加成功
     */
    Result add(AiAppNode node);

    /**
     * 更新节点信息
     *
     * @param node 需要更新的节点对象
     * @return 是否更新成功
     */
    Result update(AiAppNode node);

    /**
     * 删除节点
     *
     * @param id 节点ID
     * @return 是否删除成功
     */
    Result delete(Long id);


    /**
     * 添加节点的关联关系
     *
     * @param id       节点ID
     * @param caseName
     * @param afterId
     * @return
     */
    Result addNodeAfters(Long id, String caseName,Long afterId);

    /**
     * 添加app的5个节点
     * @param appId
     * @return
     */
      Result initAppNodes(Long appId);

    /**
     * 根据appId移除所有的节点信息
     * @param appId
     */
    Result delAllNodeByAppId(Long appId);

    Result addNodes(List<AiAppNode> nodeList);

    /**
     * 根据appId,type获取节点信息,并在反向查找当前找到节点的前置节点
     * @return
     */
    Result<AiAppNode> getNodeByAppIdAndType(Long appId, String type);


}
